<?php
// +----------------------------------------------------------------------
// | 台州安点
// +----------------------------------------------------------------------
// | Copyright (c) 2011~2099 safedot.cn.
// +----------------------------------------------------------------------
// | Licensed (   )
// +----------------------------------------------------------------------
// | Author: Joe/Fred
// +----------------------------------------------------------------------
namespace app\admin\controller;

use app\service\GoodsService;
use think\Db;
use think\facade\Hook;
use app\service\IntegralService;
use app\service\UserService;

/**
 * 用户管理
 * @author   Joe/Fred
 * http://safedot.cn
 * @version  0.0.1
 * @datetime 2021-04-10T21:51:08+0800
 */
class User extends Common
{
    /**
     * 构造方法
     * @author   Joe/Fred
     * http://safedot.cn
     * @version  0.0.1
     * @datetime 2016-12-03T12:39:08+0800
     */
    public function __construct()
    {
        // 调用父类前置方法
        parent::__construct();

        // 登录校验
        $this->IsLogin();

        // 权限校验
        $this->IsPower();
    }

    /**
     * [Index 用户列表]
     * @author   Joe/Fred
     * http://safedot.cn
     * @version  0.0.1
     * @datetime 2016-12-06T21:31:53+0800
     */
    public function Index()
    {
        // 总数
        $total = UserService::UserTotal($this->form_where);

        // 分页
        $page_params = [
            'number' => $this->page_size,
            'total' => $total,
            'where' => $this->data_request,
            'page' => $this->page,
            'url' => MyUrl('admin/user/index'),
        ];
        $page = new \base\Page($page_params);

        // 获取数据列表
        $data_params = [
            'where' => $this->form_where,
            'm' => $page->GetPageStarNumber(),
            'n' => $this->page_size,
            'order_by' => $this->form_order_by['data'],
        ];
        $ret = UserService::UserList($data_params);

        // Excel地址
        $this->assign('excel_url', MyUrl('admin/user/excelexport', $this->data_request));

        // 基础参数赋值
        $this->assign('params', $this->data_request);
        $this->assign('page_html', $page->GetPageHtml());
        $this->assign('data_list', $ret['data']);
        return $this->fetch();
    }

    /**
     * 详情
     * @author   Joe/Fred
     * http://safedot.cn
     * @version  1.0.0
     * @datetime 2019-08-05T08:21:54+0800
     */
    public function Detail()
    {
        if (!empty($this->data_request['id'])) {
            // 条件
            $where = [
                ['id', '=', intval($this->data_request['id'])],
            ];

            // 获取列表
            $data_params = [
                'm' => 0,
                'n' => 1,
                'where' => $where,
            ];
            $ret = UserService::UserList($data_params);
            $data = (empty($ret['data']) || empty($ret['data'][0])) ? [] : $ret['data'][0];
            $this->assign('data', $data);
        }
        return $this->fetch();
    }

    /**
     * [ExcelExport excel文件导出]
     * @author   Joe/Fred
     * http://safedot.cn
     * @version  0.0.1
     * @datetime 2017-01-10T15:46:00+0800
     */
    public function ExcelExport()
    {
        // 获取数据列表
        $data_params = [
            'where' => $this->form_where,
            'm' => 0,
            'n' => 0,
        ];
        $data = UserService::UserList($data_params);

        // Excel驱动导出数据
        $excel = new \base\Excel(array('filename' => 'user', 'title' => lang('excel_user_title_list'), 'data' => $data['data'], 'msg' => '没有相关数据'));
        return $excel->Export();
    }

    /**
     * [SaveInfo 用户添加/编辑页面]
     * @author   Joe/Fred
     * http://safedot.cn
     * @version  0.0.1
     * @datetime 2016-12-14T21:37:02+0800
     */
    public function SaveInfo()
    {
        // 参数
        $params = $this->data_request;

        // 用户编辑
        $data = [];
        if (!empty($params['id'])) {
            $data_params = [
                'where' => ['id' => $params['id']],
                'm' => 0,
                'n' => 1,
            ];
            $ret = UserService::UserList($data_params);
            if (empty($ret['data'][0])) {
                return $this->error('用户信息不存在', MyUrl('admin/user/index'));
            }

            // 生日
            $ret['data'][0]['birthday_text'] = empty($ret['data'][0]['birthday']) ? '' : date('Y-m-d', $ret['data'][0]['birthday']);

            $data = $ret['data'][0];
        }

        // 用户编辑页面钩子
        $hook_name = 'plugins_view_admin_user_save';
        $this->assign($hook_name . '_data', Hook::listen($hook_name,
            [
                'hook_name' => $hook_name,
                'is_backend' => true,
                'user_id' => isset($params['id']) ? $params['id'] : 0,
                'data' => &$data,
                'params' => &$params,
            ]));

        // 性别
        $this->assign('common_gender_list', lang('common_gender_list'));

        // 数据
        unset($params['id']);
        $this->assign('data', $data);
        $this->assign('params', $params);
        return $this->fetch();
    }

    /**
     * [Save 用户添加/编辑]
     * @author   Joe/Fred
     * http://safedot.cn
     * @version  0.0.1
     * @datetime 2016-12-14T21:37:02+0800
     */
    public function Save()
    {
        // 是否ajax
        if (!IS_AJAX) {
            return $this->error('非法访问');
        }

        // 开始操作
        $params = $this->data_post;
        $params['admin'] = $this->admin;
        return UserService::UserSave($params);
    }

    /**
     * [Delete 用户删除]
     * @author   Joe/Fred
     * @blog     http://gong.gg/
     * @version  0.0.1
     * @datetime 2016-12-15T11:03:30+0800
     */
    public function Delete()
    {
        // 是否ajax
        if (!IS_AJAX) {
            return $this->error('非法访问');
        }

        // 开始操作
        $params = $this->data_post;
        $params['admin'] = $this->admin;
        return UserService::UserDelete($params);
    }

    /**
     * 用户商品分类权限配置
     */
    public function getUserCategory()
    {
        // 参数
        $params = $this->data_request;
        $goods_cate = GoodsService::GoodsCategoryAll();
        foreach ($goods_cate as &$item){
            $category = Db::name('user_goods_category')->where(['user_id' => $params['id'], 'category_id' => $item['id'], 'status' => 1])->find();
            $item['status'] = !empty($category) ? 1 : 0;

            foreach ($item['items'] as &$val){
                $category = Db::name('user_goods_category')->where(['user_id' => $params['id'], 'category_id' => $val['id'], 'status' => 1])->find();
                $val['status'] = !empty($category) ? 1 : 0;
            }
        }
        //获取用户的配置
        $this->assign('params', $this->data_request);
        $this->assign('goods_cate', $goods_cate);
        return $this->fetch();
    }

    /**
     * 用户商品分类权限配置 （变更/新增）
     */
    public function editUserCategory()
    {
        // 是否ajax
        if (!IS_AJAX) {
            return $this->error('非法访问');
        }

        // 开始操作
        $params = $this->data_post;
        $params['admin'] = $this->admin;
        return UserService::setGoodsCategoryPower($params);
    }
}

?>